package models

import (
	"encoding/json"
)

// MultiLanguageMsg 多语言消息结构
type MultiLanguageMsg struct {
	CN string `json:"cn"` // 中文消息
	EN string `json:"en"` // 英文消息
	VN string `json:"vn"` // 越南语消息
}

// BaseResponse 基础响应结构
type BaseResponse struct {
	Code string          `json:"code"` // 响应码
	Msg  json.RawMessage `json:"msg"`  // 响应消息，可能是字符串或多语言对象
}

// GetMessage 获取消息内容
// 如果是多语言消息，返回英文消息；如果是字符串消息，直接返回
func (r *BaseResponse) GetMessage() string {
	var multiLangMsg MultiLanguageMsg
	if err := json.Unmarshal(r.Msg, &multiLangMsg); err == nil && multiLangMsg.EN != "" {
		return multiLangMsg.EN
	}

	var strMsg string
	if err := json.Unmarshal(r.Msg, &strMsg); err == nil {
		return strMsg
	}

	return string(r.Msg)
}

// IsSuccess 检查响应是否成功
func (r *BaseResponse) IsSuccess() bool {
	return r.Code == "0000"
}

// Error 实现error接口
func (r *BaseResponse) Error() string {
	return r.GetMessage()
}
